package jp.co.nes.awssupport.common.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.ZonedDateTime;
import java.util.Calendar;

import org.apache.commons.dbutils.ColumnHandler;

import jp.co.nes.awssupport.common.utility.DateUtil;

/**
 * ZonedDateTimeColumnHandlerクラスです。<br>
 * ZonedDateTime型のフィールドをもつBeanクラスのためのColumnHandlerです。<br>
 * BeanProcessorExクラスの中で使用しています。
 */
public class ZonedDateTimeColumnHandler implements ColumnHandler {

    /**
     * デフォルトコンストラクタです。
     */
    public ZonedDateTimeColumnHandler() {
    }

    /*
     * (非 Javadoc)
     * @see org.apache.commons.dbutils.ColumnHandler#match(java.lang.Class)
     */
    @Override
    public boolean match(Class<?> propType) {
        return propType.equals(ZonedDateTime.class);
    }

    /*
     * (非 Javadoc)
     * @see org.apache.commons.dbutils.ColumnHandler#apply(java.sql.ResultSet, int)
     */
    @Override
    public Object apply(ResultSet rs, int columnIndex) throws SQLException {
        Calendar utccal = DateUtil.getUTCCalendarForResultSet();
        return DateUtil.toZonedDateTime(rs.getTimestamp(columnIndex, utccal));
    }
}
